G_DEFINE_INTERFACE (GdkPopup, gdk_popup, GDK_TYPE_SURFACE)
-enum
-{
- POPUP_LAYOUT_CHANGED,
-
- N_SIGNALS
-};
-
-static guint signals[N_SIGNALS] = { 0 };
-
static gboolean
gdk_popup_default_present (GdkPopup *popup,
int width,
P_("Whether to hide on outside clicks"),
FALSE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-
- /**
- * GdkPopup::popup-layout-changed
- * @popup: the #GdkSurface that was laid out
- *
- * Emitted when the layout of a popup surface has changed, e.g. if the popup
- * layout was reactive and after the parent moved causing the popover to end
- * up partially off-screen.
- */
- signals[POPUP_LAYOUT_CHANGED] =
- g_signal_new (g_intern_static_string ("popup-layout-changed"),
- GDK_TYPE_POPUP,
- G_SIGNAL_RUN_FIRST,
- 0,
- NULL,
- NULL,
- NULL,
- G_TYPE_NONE,
- 0);
}
/**
return TRUE;
}
-static void
-popup_layout_changed (GdkSurface *surface,
- GtkWidget *widget)
-{
- GtkPopover *popover = GTK_POPOVER (widget);
- GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
-
- update_popover_layout (popover, gdk_popup_layout_ref (priv->layout));
-}
-
static void
gtk_popover_activate_default (GtkPopover *popover)
{
g_signal_connect_swapped (priv->surface, "notify::mapped", G_CALLBACK (surface_mapped_changed), widget);
g_signal_connect (priv->surface, "render", G_CALLBACK (surface_render), widget);
g_signal_connect (priv->surface, "event", G_CALLBACK (surface_event), widget);
- g_signal_connect (priv->surface, "popup-layout-changed", G_CALLBACK (popup_layout_changed), widget);
GTK_WIDGET_CLASS (gtk_popover_parent_class)->realize (widget);
g_signal_handlers_disconnect_by_func (priv->surface, surface_mapped_changed, widget);
g_signal_handlers_disconnect_by_func (priv->surface, surface_render, widget);
g_signal_handlers_disconnect_by_func (priv->surface, surface_event, widget);
- g_signal_handlers_disconnect_by_func (priv->surface, popup_layout_changed, widget);
gdk_surface_set_widget (priv->surface, NULL);
gdk_surface_destroy (priv->surface);
g_clear_object (&priv->surface);